package essential.ch3;

import java.util.Objects;

/**
 * @Date 2021/10/23
 * @Created by Jonathan
 * <p>
 * 重写equals需要注意的一些规则
 * 1) 自反性
 * 2) 对称性
 * 3) 传递性
 * 4) 一致性
 * 5) 对于任何非空引用值x，x.equals(null)应返回false。
 */
public class Box {
    private int batch;

    public Box(int batch) {
        this.batch = batch;
    }

    /**
     * 本意是同一批次的就是相同
     *
     * @param o 待比较的对象
     * @return
     */
    @Override
    public boolean equals(Object o) {
        if (o instanceof Box) {
            Box box = (Box) o;
            return this.batch == ((Box) o).batch;
        }
        return false;
    }

    @Override
    public int hashCode() {
        return Objects.hash(batch);
    }

    public static void main(String[] args) {
        Box box1 = new Box(1);
        Box box2 = new Box(1);
        System.out.println(box1.equals(box2));
        System.out.println(box1 == box2);
    }
}
